#ifndef DEF_AES_H
#define DEF_AES_H

	#ifdef DEF_AES_C
		#define EXTERN
	#else
		#define EXTERN extern 
	#endif
    
    //#include "string.h" //for memcpy memset
	
	typedef unsigned char UBYTE ;
		
	typedef enum ENUM_KeySize_
	{
		BIT128 ,
		BIT192 ,
		BIT256 
	}ENUM_KEYSIZE;

	EXTERN void vAes_SetKey( ENUM_KEYSIZE keysize, UBYTE *key );
	
	EXTERN void vAes_Cipher( UBYTE *input, UBYTE *output );
	EXTERN void vAes_InvCipher( UBYTE *input, UBYTE *output );
	
	//---------------AES EBC----------------------//
	EXTERN void aes_ecb_encrypt( UBYTE *input, UBYTE *output , int len ) ;
	EXTERN void aes_ecb_decrypt( UBYTE *input, UBYTE *output , int len ) ;
	//---------------AES CBC----------------------//
	EXTERN void aes_cbc_encrypt( UBYTE *iv , UBYTE *input, UBYTE *output , int len ) ;
	EXTERN void aes_cbc_decrypt( UBYTE *iv , UBYTE *input, UBYTE *output , int len ) ;
	
	
	#undef EXTERN
#endif
